" update 2017-05-24 10:30:00
" 使用vim8 native package manager
" 移除 vundle


" 定义快捷键的前缀，即 <Leader>
let mapleader=";"



" 文件类型侦测

" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on



" vim 自身（非插件）快捷键
 
" 定义快捷键到行首和行尾
nmap LB 0
nmap LE $
 
" 设置快捷键将选中文本块复制至系统剪贴板
vnoremap <Leader>y "+y 
" 设置快捷键将系统剪贴板内容粘贴至vim 
nmap <Leader>p "+p 
 
" 定义快捷键关闭当前分割窗口
nmap <Leader>q :q<CR>
" 定义快捷键保存当前窗口内容
nmap <Leader>w :w<CR>
" 定义快捷键保存当前窗口内容并退出
nmap <Leader>s :wq<CR>
" 定义快捷键保存所有窗口内容并退出 vim 
nmap <Leader>WQ :wa<CR>:q<CR>
" 不做任何保存，直接退出 vim 
nmap <Leader>Q :qa!<CR>
 
" 设置快捷键遍历子窗口
" 依次遍历
nnoremap nw <C-W><C-W>
" 跳转至右方的窗口
nnoremap <Leader>lw <C-W>l
" 跳转至左方的窗口
nnoremap <Leader>hw <C-W>h
" 跳转至上方的子窗口
nnoremap <Leader>kw <C-W>k
" 跳转至下方的子窗口
nnoremap <Leader>jw <C-W>j

" 定义快捷键在结对符之间跳转
nmap <Leader>M %



" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC



" 其他
" 开启实时搜索功能
set incsearch

" 搜索时大小写不敏感
set ignorecase

" 关闭兼容模式
set nocompatible

" vim 自身命令行模式智能补全
set wildmenu



" 配色方案
set background=dark
colorscheme desert
"colorscheme solarized
"colorscheme molokai
"colorscheme phd



" 辅助信息

" 总是显示状态栏
set laststatus=2

" 显示光标当前位置
set ruler

" 开启行号显示
set number

" 高亮显示当前行/列
" set cursorline
" set cursorcolumn

" 高亮显示搜索结果
set hlsearch



" 语法分析

" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on



" 缩进

" 自适应不同语言的智能缩进
filetype indent on

" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4



" 代码折叠

" 基于缩进或语法进行代码折叠
"set foldmethod=indent
set foldmethod=syntax
" 启动 vim 时关闭折叠代码
set nofoldenable



" tags
" 设置tags文件目录
" set tags+=./tags
" 自动切换目录
set autochdir
" 递归查找tags
set tags=tags;



" 某些情况backspace无法删除，windows环境
set backspace=indent,eol,start


"解决中文乱码问题
set fenc=chinese
"
" "处理文本中显示乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
    set fileencoding=chinese
else
    set fileencoding=utf-8
endif

"处理菜单及右键菜单乱码
" source $VIMRUNTIME/delmenu.vim
" source $VIMRUNTIME/menu.vim
"             
" 处理consle输出乱码
language messages zh_CN.utf-8
"中文乱码结束

set langmenu=zh_CN.UTF-8




""""""""""""""""""""""""""""""""""""""""""""""
" PluginConfig
""""""""""""""""""""""""""""""""""""""""""""""

" 工程文件浏览 NERDTree

" 使用 NERDTree 插件查看工程文件。设置快捷键，速记：file list
nmap <Leader>ls :NERDTreeToggle<CR>
" 设置 NERDTree 子窗口宽度
let NERDTreeWinSize=22
" 设置 NERDTree 子窗口位置
let NERDTreeWinPos="left"
" 显示隐藏文件
let NERDTreeShowHidden=1
" NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1



" 多文档编辑 MiniBufExplorer
 
" 显示/隐藏 MiniBufExplorer 窗口
map <Leader>bl :MBEToggle<cr>

" buffer 切换快捷键
map <C-Tab> :MBEbn<cr>
map <C-S-Tab> :MBEbp<cr>
